#ifndef _XQGCM_UNIT_TESTER
#define _XQGCM_UNIT_TESTER

#include <misclib.h>
#include <stdlib.h>
#include <string>
#include <vector>

using namespace std;

class xCPPUnitTester {
	string testName;
	bool testPassed; 
	vector<string> errors;
	public:
	// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -	
	xCPPUnitTester(const char * tName);
	bool testFailed() const;
	const string & name() const;
	virtual void runTest() = 0;
	void testAssert( bool cond, const char * errorMsgFmt, ... );
	void displayStatus() const;
	~xCPPUnitTester();
};
// =================================================================================== //
bool RunCPPUnitTests();
void RegisterCPPUnitTestRegistrationFunction( void ( * regFunc ) ()  );
void RegisterCPPUnitTests(); 

#endif

